#pragma once
#include <memory>

class Callbackable
{
public:
	virtual ~Callbackable() = 0 {}

	void Callback()
	{
		DoCallback();
	}
private:
	virtual void DoCallback() = 0 {}
};

typedef std::tr1::shared_ptr<Callbackable> CallbackablePtr;
